<?php
/**
 * bll base
 * @package app-member-shared_lib_bll_member
 */
load_lib('/bll/bll');
/**
 * bll base
 * @author pandajingjing
 * @package app-member-shared_lib_bll_member
 */
class bll_member_base extends bll_bll{

	/**
	 * 加(解)密登录信息的key
	 * @var string
	 */
	private $_strLoginInfoKey='key';

	function __construct(){
		parent::__construct();
	}

	/**
	 * 获取用户中心URL
	 * @param string $p_strAction
	 * @param string $p_strReturnURL
	 * @param int $p_intCallTime
	 * @param string $p_strCallType
	 * @param array $p_arrCstParam
	 * @return string
	 */
	function getMemCenterURL($p_strAction,$p_strReturnURL,$p_intCallTime,$p_strCallType='',$p_arrCstParam=array()){
		load_lib('/dao/homebasedao');
		$strAppKey=dao_homebasedao::getConfig('member_appkey','member');
		$strAppSecret=dao_homebasedao::getConfig('member_appsecret','member');
		load_lib('/util/memberurl');
		switch($p_strAction){
			case 'reg':
				return util_memberurl::getRegURL($strAppKey,$strAppSecret,$p_strReturnURL,$p_intCallTime,$p_strCallType,$p_arrCstParam);
				break;
			case 'logout':
				return util_memberurl::getlogoutURL($strAppKey,$strAppSecret,$p_strReturnURL,$p_intCallTime,$p_arrCstParam);
				break;
			case 'login':
			default:
				return util_memberurl::getLoginURL($strAppKey,$strAppSecret,$p_strReturnURL,$p_intCallTime,$p_strCallType,$p_arrCstParam);
				break;
		}
	}

	/**
	 * 验证回调是否合法
	 * @param string $p_strActionSig
	 * @param int $p_intUserID
	 * @param string $p_strUserName
	 * @param int $p_intCallTime
	 * @param int $p_intNowTime
	 * @return true/string
	 */
	function chkMemberCallBack($p_strActionSig,$p_intUserID,$p_strUserName,$p_intCallTime,$p_intNowTime){
		load_lib('/dao/homebasedao');
		$strAppSecret=dao_homebasedao::getConfig('member_appsecret','member');
		load_lib('/util/member');
		$strRightSig=util_member::mkCallBackSig($strAppSecret,$p_intUserID,$p_strUserName,$p_intCallTime);
		if($p_strActionSig==$strRightSig){
			if($p_intNowTime-$p_intCallTime>30000){ //@todo调整时间
				return 'Err_Logic_AppTime_TooLong';
			}else{
				return true;
			}
		}else{
			return 'Err_Logic_ActSig_Deregulation';
		}
	}

	/**
	 * 生成客户端保存的登录信息
	 * @param array $p_arrLoginInfo
	 * @return string
	 */
	function encryptLoginInfo($p_arrLoginInfo){
		load_lib('/util/crypt');
		return util_crypt::encrypt(json_encode($p_arrLoginInfo),$this->_strLoginInfoKey);
	}

	/**
	 * 解析客户端保存的登录信息
	 * @param string $p_strDecryptInfo
	 * @return array
	 */
	function decryptLoginInfo($p_strDecryptInfo){
		load_lib('/util/crypt');
		return json_decode(util_crypt::decrypt($p_strDecryptInfo,$this->_strLoginInfoKey),true);
	}
}